package sparse

import "fmt"

type ValueNode struct {
	row int
	col int
	value int
}


func SparseTest()  {
	var chessMap [11][11]int
	chessMap[1][2] = 1
	chessMap[2][3] = 2
	printArray(chessMap)

	/* 转成稀疏数组
	 * 思路
	 * （1）遍历 chessMan，如果我们发现有一个元素的值不为0，创建一个node结构体
	 * （2）将其放入到对应的切片即可
	 */
	sparseArr := make([]ValueNode, 0)
	sparseArr = append(sparseArr, ValueNode{
		row:11,
		col:11,
		value:0,
	})
	for i,v := range chessMap{
		for j, v2 := range v{
			if v2 != 0{
				sparseArr = append(sparseArr, ValueNode{
					row:i,
					col:j,
					value:v2,
				})
			}
		}
	}
	for _,v := range sparseArr{
		fmt.Println(v)
	}

	var chessMap2 [11][11]int
	for i,v := range sparseArr{
		if i == 0{
			continue
		}
		chessMap2[v.row][v.col] = v.value
	}
	printArray(chessMap2)
}

func printArray(chessMap [11][11]int)  {
	for _,v := range chessMap{
		for _, v2 := range v{
			fmt.Print(v2, " ")
		}
		fmt.Println()
	}
}